首战Kaggle之实战教学
作者:zhaikun 风控建模屌丝一枚,现居于北京
个人微信公众号:Python数据分析与评分卡建模
看过kaggle比赛,学习过kaggle大神代码,但由于各种各样原因一直未实际参加过kaggle比赛,也算是小萌新吧。相信也有很多小伙伴听说过kaggle,想参加,却一直没时间参加或不知道怎么参加,今天就做次教学吧。
泰坦尼克号是 kaggle 的比赛入门项目之一,网站 https://www.kaggle.com/c/titanic/leaderboard。
不要听书新手比赛就小瞧他,抛开其中的历史含义与其中的代价,这个数据集是个非常经典的数据集。经典道什么程度呢?
1.他基本包含了你建模过程中的所有变量类型和数据处理方法
2.891个训练样本,418个测试样本,那么所有关于模型的想法、组合与测试,都可以在这个数据集上得到快速反馈
3.9725个参赛队伍,你很容易知道你与别人的差距,快速进步
下面开始正文,首先是老司机教你们怎么玩转kaggle。
共9725个队伍,先看rules。
提交限制:每天最多提交10次
比赛时间:Start Date: 9/28/2012 9:13 PM UTC ,End Date: 1/7/2020 12:00 AM UTC
所以这是一个正在进行中的比赛,我们可以参加。
在Evaluation中,我们看见评价指标是 accuracy,不是ks,不是auc,所以之后模型调优的时候,调优指标不要选错了。
在Data里,有训练集和测试集,还有提交示例。我们用训练集训练模型,在测试集上预测,预测的结果按照示例提交给kaggle。
提交示例是这样的,左边是id,右边是标签。
预测出结果后,在提交页面点击提交:Submit Predictions,ok,然后等打分和排名。
现在开始代码:
预览:
原先的变量名不符合我的习惯,变量重命名:
缺失值可视化:
删除缺失比例0.5以上的特征
看目标变量分布:
1是生存,0是死亡。
接下来把变量分成分类变量与连续变量,先单变量可视化。
其中 name:
ticket_info:
有大神说这可以特征衍生,我在这里就不做了,直接删除。
brothers_sisters 是兄弟姐妹的数量:
parents_children 是父母子女的数量:
大神也说可以衍生,但是我看到的水平分布严重不平衡,我在这里就简单的合并一下,水平2以上的,合并为2+。
单分类变量处理好后,我们看分类变量与目标变量的关系。可视化:
敏锐的人应该发现:
一等乘客、女性、兄弟姐妹少、父母子女多的人,生存概率较大,至于港口,C港口的存活大,为什么呢?现在不知道。
再看连续变量与目标变量之间的关系,可视化:
年龄和船价是有异常的,我们作了1个简单处理,age 65以上的作为65,船家150以上的作为150。我们发现年龄特别小的人,0岁左右,生存概率大;船价特别高的人,基本都生存了。
好吧,孩子是希望,富翁是贵族,至于其他,也许是rose,也许是jack呢。
好,保存文件,下面补缺。
以前我批量补缺一般连续变量随机抽样,分类变量用众数,最近学到了一个建模法补缺,很高逼格呀。但是建模法补缺限制挺多,这里我们只选择了重要变量进行建模法补缺。什么是重要变量,下面告诉你。先是原先的补缺方法:
补缺后,连续变量标准话,分类变量哑变量,怎么操作请看我之前的文章。
预览:
在我看来,重要变量就是我们用随机森林重要性、gbdt重要性删选出的变量。
随机森林重要性中,明显的age、price、sex特别重要
GBDT中,price、age特别重要
好,我们选择了最重要的变量col_top 和 相对较重要的变量feature_selection
返回前面对 col_top 进行 随机森林回归建模法补缺。
补缺后,重复上面的数据处理过程,保存文件和变量。
下面我们开始建模。
逻辑回归对共线性、显著性较为敏感,所以我们先共线性筛选变量。
有vif是无穷大的,逐个筛选。
vif到10以下,我们就暂且不筛了,然后是显著性筛选,最后汇总:
这几个变量都较为显著,权重也较为显著。下面我们再判断下相关性:
brothers_sisters_0和brothers_sisters_1十分相关,两个可以删除1个。
然后上学习曲线,判断是否过拟合:
发现还可以。再看ROC和KS
下面介绍一个模型融合之bagging.
觉得没显著变化。
然后我又试验了随机森林rfc、GBDT、Xgbt、vc1和vc2,得出的模型效果如下,score是Kaggle给的分数。
然后我把预测结果分别提交:
我们先看下总排行榜:
总共是9727个队伍,我最好成绩是2528名。那么总结一下,就模型而言,我基本做到差不多了,那么欠缺的主要是特征工程。所以,特征工程决定了你模型的质量,切记!
Python爱好者社区历史文章大合集:
Python爱好者社区历史文章列表(每周append更新一次)
关注后在公众号内回复“课程”即可获取:
小编的Python入门视频课程!!!
崔老师爬虫实战案例免费学习视频。
丘老师数据科学入门指导免费学习视频。
陈老师数据分析报告制作免费学习视频。
玩转大数据分析!Spark2.X+Python 精华实战课程免费学习视频。
丘老师Python网络爬虫实战免费学习视频。